#pragma once

#include "goal.h"
#include "emotionalmemory.h"

namespace BAA
{

	class Agent;
	class Role;
	class EmotionalMemory;
	class Event;

	class Goal_Defend:public Goal
	{
	public:
		Goal_Defend():Goal("defend")
		{

		}

		~Goal_Defend()
		{

		}


		virtual void Initialize(Role * roleParent)
		{
			Goal::Initialize(roleParent);
			mPrecondition = "defend";

			mAngerPoint = 0.4f;
			mFearPoint = 0.6f;
			mHonorPoint = 0.6f;
		}

		virtual EmotionalMemory* AppraiseEvent(Event * event);
		virtual float CalculateStateUtility(Agent * agent);
		virtual float CalculateUtilityForAction(Action * action);

	protected:
		float mAngerPoint;
		float mFearPoint;
		float mHonorPoint;
	};// end class
}// end namespace